# 判断是否互为字符重排

# 解法一：排序
def is_permutation1(str1, str2):
    if len(str1) != len(str2):
        return False
    return sorted(str1) == sorted(str2)


# 解法二：数组哈希表
def is_permutation2(str1, str2):
    if len(str1) != len(str2):
        return False
    helper = [0] * 128
    for c1 in str1:
        helper[ord(c1)] += 1
    for c2 in str2:
        helper[ord(c2)] -= 1
        if helper[ord(c2)] < 0:
            return False
    return True


# 解法三：字典哈希表
def is_permutation3(str1, str2):
    if len(str1) != len(str2):
        return False
    helper = {}
    for c1 in str1:
        helper[c1] = 0
    for c2 in str2:
        helper[c2] = 0
    for c1 in str1:
        helper[c1] += 1
    for c2 in str2:
        helper[c2] -= 1
        if helper[c2] < 0:
            return False
    return True

str1 = 'abcdex'
str2 = 'acbdfe'
print(is_permutation1(str1, str2))
print(is_permutation2(str1, str2))
print(is_permutation3(str1, str2))